主题
添加保护 - VipProtectAddProtect
函数简介
添加保护。(高级版功能,普通版无法使用)
接口名称
VipProtectAddProtectDLL调用
c
int32_t VipProtectAddProtect(int64_t instance, int64_t pid, string path, int32_t mode, int32_t permission);参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| instance | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
| pid | 长整数型 | 需要保护的进程ID。 |
| path | 字符串 | 需要保护的文件或文件夹路径。 |
| mode | 整数型 | 保护模式:1-允许白名单进程访问,2-禁止全部访问,3-禁止黑名单进程访问,4-允许白名单文件路径访问,5-禁止黑名单文件路径访问。 |
| permission | 整数型 | 保护权限:位标志组合,见下表。 |
permission 保护权限
将需要的标志 按位或(|)相加 后传入 permission 参数(也可使用 + 或十六进制字面量):
| 值 | 十六进制 | 说明 |
|---|---|---|
| 1 | 0x01 | 阻止打开 |
| 2 | 0x02 | 隐藏信息 |
| 4 | 0x04 | 阻止内存访问 |
| 8 | 0x08 | 阻止窗口操作 |
位运算组合示例
csharp
// 阻止打开 + 阻止内存访问
int permission = 0x01 | 0x04; // 结果为 5
ola.VipProtectAddProtect(1234, @"C:\secret\data.txt", 2, permission);cpp
// 全部权限:阻止打开 + 隐藏信息 + 阻止内存访问 + 阻止窗口操作
int permission = 0x01 | 0x02 | 0x04 | 0x08; // 0x0F = 15
ola.VipProtectAddProtect(1234, "C:\\secret\\data.txt", 2, permission);python
# 隐藏信息 + 阻止窗口操作
permission = 0x02 | 0x08 # 10
ret = ola.VipProtectAddProtect(1234, r"C:\secret\data.txt", 2, permission)go
// 仅阻止打开
permission := 0x01
ret := ola.VipProtectAddProtect(1234, `C:\secret\data.txt`, 2, permission)示例
SDK 调用
cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
int ret = ola.VipProtectAddProtect(1234, "C:\\test.txt", 0, 0);
if (ret == 1) {
// 操作成功
}csharp
using OLAPlug;
var ola = new OLAPlugServer();
int ret = ola.VipProtectAddProtect(1234, "C:\\test.txt", 0, 0);
if (ret == 1)
{
// 操作成功
}python
from OLAPlugServer import OLAPlugServer
ola = OLAPlugServer()
ret = ola.VipProtectAddProtect(1234, "C:\\test.txt", 0, 0)
if ret == 1:
pass # 操作成功java
import com.olaplug.OLAPlugServer;
OLAPlugServer ola = new OLAPlugServer();
int ret = ola.VipProtectAddProtect(1234, "C:\\test.txt", 0, 0);
if (ret == 1) {
// 操作成功
}go
import "github.com/ola/olaplug/olaplug"
ola, _ := olaplug.NewOLAPlugServer("OLAPlug_x64.dll")
defer ola.ReleaseObj()
ret := ola.VipProtectAddProtect(1234, "C:\\test.txt", 0, 0)
if ret == 1 {
// 操作成功
}rust
use olaplug::OLAPlugServer;
let ola = OLAPlugServer::new("OLAPlug_x64.dll").unwrap();
let ret = ola.vip_protect_add_protect(1234, "C:\\test.txt", 0, 0);
if ret == 1 {
// 操作成功
}cpp
var ola = com("OlaPlug.OlaSoft")
var ret = ola.VipProtectAddProtect(1234, "C:\\test.txt", 0, 0)
if(ret == 1) {
// 操作成功
}vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
ret = ola.VipProtectAddProtect(1234, "C:\\test.txt", 0, 0)
If ret = 1 Then
' 操作成功
End Iftext
.局部变量 ola, OLAPlug
ola.创建 ()
ret = ola.VipProtectAddProtect(1234, “C:\\test.txt”, 0, 0)
.如果真 (ret = 1)
' 操作成功
.如果真结束aardio
import OLAPlugServer;
var ola = OLAPlugServer();
var ret = ola.VipProtectAddProtect(1234, "C:\\test.txt", 0, 0);
if(ret == 1){
// 操作成功
}text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
整数 ret = ola.VipProtectAddProtect(1234, "C:\\test.txt", 0, 0)
如果真 (ret = 1)
{
// 操作成功
}cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
int32_t ret = ola.VipProtectAddProtect(1234, "C:\\test.txt", 0, 0);
if (ret == 1) {
// 操作成功
}原生 DLL 调用
cpp
VipProtectAddProtect(instance, 1234, "C:\\test.txt", 0, 0);csharp
using System.Runtime.InteropServices;
using System.Text;
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int VipProtectAddProtect(long ola, int pid, string path, int mode, int permission);
VipProtectAddProtect(instance, 1234, "C:\\test.txt", 0, 0);python
from ctypes import CDLL, c_int, c_int64, create_string_buffer
ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
ola.VipProtectAddProtect(instance, 1234, "C:\\test.txt", 0, 0)返回值
成功返回 1;失败时接口返回值即为错误码(有符号 int32,日志里常见负数)。
错误码去哪里读
| 方式 | 说明 |
|---|---|
本接口返回值 ret | 失败时 ret 本身就是错误码,优先用它对照。 |
GetLastError / GetLastError() | 读取最后一次错误码(通常与失败时的 ret 一致)。 |
| GetLastErrorString | 读取中文说明;用完后须 FreeStringPtr 释放。 |
| 驱动错误码说明 - DriverErrorCodes | 十进制 / 十六进制完整对照表;对 ret 做 Ctrl+F 即可定位。 |
| 返回值 | 说明 |
|---|---|
1 | 成功。 |
0 | 权限不足,或未拿到驱动 Status(如通讯未建立、参数无效)。 |
| 其他 | 驱动错误码,见上方「错误码去哪里读」。 |
TIP
失败示例:int ret = ...; if (ret != 1) { /* 到驱动错误码说明页搜索 ret */ }
注意事项
| 项目 | 说明 |
|---|---|
| 管理员权限 | 须以 管理员权限 运行;内置欧拉驱动会自动加载,无需手动 LoadDriver。自签名驱动需先 ImportDriverFromFile 或 ImportDriver。 |
| 需要先调用 VipProtectEnableDr | 需要先调用 VipProtectEnableDriver 开启高级保护。 |
| 权限 | permission 参数可以使用位或运算符组合多个权限。 |
